我知道我可以通过设置特定字段来原子地更新现有的Mongo文档。下面的代码可以做到这一点:
var update = MongoDB.Driver.Builders.Update.Set("InsideLegMeasurement", 32.4); SafeModeResult result = personCollection.Update(query, update, UpdateFlags.Multi,SafeMode.True);
但是,我可以通过传入要与现有文档“合并”的文档来自动更新几个字段吗?想象一下,我有一个文档如下:{“ favcolor”:“ red”,“ favfood”:“ pasta”},我想用这些值更新现有文档。我想做这个:
var update = MongoDB.Driver.Builders.Update.Merge({"favcolor":"red","favfood":"pasta"});
甚至
var update = MongoDB.Driver.Builders.Update.Merge(myUpdateBsonDoc);
其中myBsonDocument包含很多字段,我不想从要与原始文档合并的文档中“解包”。
这有可能吗?
谢谢
找到了答案:
//var snippetJSON= '{title:"Tin Machine II",brandnewfield:"this gets added nicely"}'; MongoDB.Bson.BsonDocument updateDoc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize(snippetJSON); var update = new UpdateDocument { { "$set", updateDoc } };
当您知道如何时就轻松!